<attachment contenteditable="false" data-atts="%5B%5D" data-aid=".atts-0824e5e6-c949-4a0e-bc1f-f949515a058f"></attachment><h3>pkg 模块</h3><p><strong>pkg模块是虚拟的，根据操作系统的不同，调用相关的工具安装操作系统。</strong></p><p><a href="https://www.unixhot.com/docs/saltstack/ref/states/all/salt.states.pkg.html#module-salt.states.pkg" target="_blank"><strong>https://www.unixhot.com/docs/saltstack/ref/states/all/salt.states.pkg.html#module-salt.states.pkg</strong></a></p><p>pkg模块常用方法：</p><p>pkg.installed 安装</p><p>pkg.latest 确保最新版本</p><p>pkg.remove 卸载</p><p>pkg.purge 卸载并且删除配置文件</p><p><br></p><p><br></p><pre class="ql-syntax" spellcheck="false">#使用pkg模块安装多个软件：

lamp-pkg:

  pkg-installed:

 &nbsp;&nbsp; - pkgs:

 &nbsp;&nbsp;&nbsp;&nbsp; - httpd

 &nbsp;&nbsp;&nbsp;&nbsp; - php

 &nbsp;&nbsp;&nbsp;&nbsp; - mysql

 &nbsp;&nbsp;&nbsp;&nbsp; - maridb-server

 &nbsp;&nbsp;&nbsp;&nbsp; - php-mysql

 &nbsp;&nbsp;&nbsp;&nbsp; - php-cli

 &nbsp;&nbsp;&nbsp;&nbsp; - php-mbstring
</pre><p>&nbsp;</p><p><br></p><p><br></p><h3>file模块</h3><p><a href="https://www.unixhot.com/docs/saltstack/ref/states/all/salt.states.file.html#module-salt.states.file" target="_blank">https://www.unixhot.com/docs/saltstack/ref/states/all/salt.states.file.html#module-salt.states.file</a></p><p><br></p><p><br></p><pre class="ql-syntax" spellcheck="false">apache-config:

  file.managed:

 &nbsp;&nbsp; - name: /etc/httpd/conf/httpd.conf

 &nbsp;&nbsp; - source: salt://files/httpd.conf

 &nbsp;&nbsp; - user: root

 &nbsp;&nbsp; - group: root

 &nbsp;&nbsp; - mode: 644
</pre><p>&nbsp;</p><p><br></p><p><br></p><pre class="ql-syntax" spellcheck="false">file.copy /etc/nginx/nginx.conf /home/zhanqi/nginx.conf 文件复制

file.get_sum /home/zhanqi/nginx.conf md5  文件md5校验

file.chown /home/zhanqi/nginx.conf zhanqi zhanqi  修改文件所属用户以及组

file.set_mode /home/zhanqi/nginx.conf 755  修改文件权限

file.mkdir /home/zhanqi/testdir 创建目录

file.remove /home/zhanqi/testdir  移除目录

file.append /home/zhanqi/nginx.conf 'add_header "Access-Control-Allow-Origin" "*";' 追加内容到文件

file.recurse 下发目录
</pre><p>&nbsp;</p><p>2）salt文件file模块，可以使用jinja模板。</p><p>Salt lets you manage files using templates and variables.</p><p>file.managed 是salt的state function。管理minion'上的local file，通过指定master上的source文件</p><p>&nbsp;</p><p><br></p><p><br></p><h3>service</h3><p>参考文档：<a href="https://www.unixhot.com/docs/saltstack/ref/states/all/salt.states.service.html#module-salt.states.service" target="_blank">https://www.unixhot.com/docs/saltstack/ref/states/all/salt.states.service.html#module-salt.states.service</a></p><p>样例：</p><p><br></p><p><br></p><pre class="ql-syntax" spellcheck="false">apache-services:

  service.running:

 &nbsp;&nbsp; - name: httpd

 &nbsp;&nbsp; - enable: True # 允许开机启动

 &nbsp;&nbsp; - reload: True # 允许重载
</pre><p>&nbsp;</p><p><br></p><p><br></p><h2>高级状态top.sls</h2><p>如果我有很多sls文件,并不能一个文件一个文件执行的.这时就需要高级状态了.</p><p>这时候就需要top.sls入口文件了.</p><p>你可以打开vim /etc/salt/master文件查看高级状态的配置,如下图.</p><p><img src=""></p><p><img src="//:0"></p><p>这个top.sls文件需要建立在file_root的base环境下面.</p><p>也就是 /src/salt/base/top.sls 如下.</p><p><br></p><p><br></p><pre class="ql-syntax" spellcheck="false">base:&nbsp;&nbsp; #环境名称

  'pe-db':

 &nbsp;&nbsp; - web.apache

  'test-tms':

 &nbsp;&nbsp; - web.apache
</pre><p>&nbsp;</p><p>runners状态管理</p><p>&nbsp;</p><p><a href="https://www.centos.bz/tag/runner/" target="_blank">runner</a>子系统提供在salt <a href="https://www.centos.bz/tag/master/" target="_blank">master</a>运行的salt模块(还记得执行和状态模块在目标服务器minion异步执行吗,不是在salt master)。</p><p>Runners可用功能为列出作业状态，实时查看事件，管理salt文件服务器，查看salt mine数据，发送wake-on-lan到minions，调用webhooks和发送其它http请求等。</p><p>官方文档 <a href="https://docs.saltstack.com/en/latest/ref/runners/index.html" target="_blank">https://docs.saltstack.com/en/latest/ref/runners/index.html</a></p><p>命令：salt-run</p><p><br></p><p><br></p><p><code>salt-run jobs.list_jobs&nbsp;# 列出当前保存在job cache中的历史执行任务</code></p><p><code>salt-run jobs.lookup_jid jid&nbsp;# 查看历史jid执行结果</code></p><p><img src="//:0"></p><p><img src="//:0"><img src=""></p><p><br></p><p><img src=""></p><p><br></p><p><img src=""></p><p><strong>备注： </strong>我们通过salt命令开头执行时，所有的命令master端分发至minion端，由minion端自己执行，如果一个模块在master存在，在minion端不存在，就会出现执行失败的情况。为了解决这个问题，提供salt runners模块，它是将所有的命令在master端执行。</p><p><br></p><p><br></p><p><code>salt-run manage.status&nbsp;#&nbsp;查看minion的状态</code></p><p><code>salt-run manage.down</code></p><p><code>salt-run manage.up</code></p><p><code>salt-run manage.versions&nbsp;#&nbsp;查看minion的版本</code></p><p>&nbsp;</p><p><img src=""></p><p><img src="//:0"></p><p>&nbsp;</p><p><br></p>